package moduleFrame.interfaces
{
	/**
	 * 映射组合接口
	 * @author Pelephone
	 */
	public interface IMapComposite extends IMaper
	{
		/**
		 * 将对象通过唯一名单例映射在模块里面
		 * @param maper 要映射的对象
		 * @param aliasName 映射在组合上的名,如果为空的话，自动设置绑定对象名为反射的路径
		 * @param mapParent 父类如果为空就父类是当前类
		 */
		function registerMaper(maper:IMaper,aliasName:String=null,mapParent:IMapComposite=null):void;
		
		/**
		 * 通过别名获取映射在模块上的对象
		 * @param aliasName 别名
		 * @return 
		 */
		function getChildMaper(aliasName:String):IMaper;
		
		/**
		 * 通过对象自动反射出路径做为别名获取映射上的单例
		 * @param refObj 要反射别名的Class对象
		 */
		function getChildMaperOf(refObj:Object):*;
		
		/**
		 * 通过类Class获取单例，此方法会自动生成对象;
		 * @param map
		 */
		function getMapSinglen(cls:Class):*;
		
		/**
		 * 通过对象自动反射出路径做为别名获取映射上的单例
		 * @param refObj 要反射别名的Class对象
		 */
		function removeChildMaper(maper:IMaper):void;
		
		/**
		 * 通过别名移除映射在模块上的对象
		 * @param aliasName 单例别名
		 */
		function removeChildMaperByName(aliasName:String):IMaper;
		
		/**
		 * 是该名字是否定有对象
		 * @param bindName
		 * @return 
		 */
		function hasChildMaper(aliasName:String):Boolean;
	}
}